//日期格式化为指定字符串
Date.format = function (fmt) { //author: meizz
    var o = {
        "M+": this.getMonth() + 1,                 //月份
        "d+": this.getDate(),                    //日
        "h+": this.getHours(),                   //小时
        "m+": this.getMinutes(),                 //分
        "s+": this.getSeconds(),                 //秒
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度
        "S": this.getMilliseconds()             //毫秒
    };
    if (/(y+)/.test(fmt))
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt))
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
},
    //获取距今天day天的日期字符串(-1 代表昨天，-7代表最近7天，-30代表最近一月)
    Date.getDateSpan = function (day=0,Minutes=0,fmt) {
        fmt = fmt || 'yyyy-MM-dd HH:mm'
        var today = new Date(new Date());
        var sMinutes = 1000 *60 * Minutes //距离的分钟
        var sday = 1000 * 60 * 60  * 24 * day // 距离的天
        var targetday_milliseconds = today.getTime() + sday+sMinutes;
        today.setTime(targetday_milliseconds); //注意，这行是关键代码
      
        var tYear = today.getFullYear();
        var tMonth = today.getMonth();
        var tDate = today.getDate();
        var tHours =  today.getHours();
        var tMinutes  = today.getMinutes();
        tMonth = ((month) => {
            return month.toString().length == 1 ? "0" + month : month; //日期单个数字补0
        })(tMonth + 1);
        tDate = ((month) => {
            return month.toString().length == 1 ? "0" + month : month;
        })(tDate);

         let obj = {
            'y': tYear, // 年份，注意必须用getFullYear
            'M': tMonth, // 月份，注意是从0-11
            'd': tDate, // 日期
            'H': tHours, // 12小时制
            'm': tMinutes // 分钟
          }

           for (let i in obj) {
            fmt = fmt.replace(new RegExp(i + '+', 'g'), function (m) {
              let val = obj[i] + ''
             
              for (let j = 0, len = val.length; j < m.length - len; j++) val = '0' + val
              return m.length === 1 ? val : val.substring(val.length - m.length)
            })
          }
          return fmt
        
    },
    //秒数时间转换成00:00:00格式
    Date.timeFormat = function (times) {
        var result = '00:00:00';
        var hour, minute, second
        if (times > 0) {
            hour = Math.floor(times / 3600);
            if (hour < 10) {
                hour = "0" + hour;
            }
            minute = Math.floor((times - 3600 * hour) / 60);
            if (minute < 10) {
                minute = "0" + minute;
            }

            second = Math.floor((times - 3600 * hour - 60 * minute) % 60);
            if (second < 10) {
                second = "0" + second;
            }
            result = hour + ':' + minute + ':' + second;
        }
        return result;
    },
    // 过滤日期格式
    Date.formatDate = function(date, fmt){
    date = !date ? new Date() : new Date(date)
    fmt = fmt || 'yyyy-MM-dd HH:mm:ss'
    let obj = {
      'y': date.getFullYear(), // 年份，注意必须用getFullYear
      'M': date.getMonth() + 1, // 月份，注意是从0-11
      'd': date.getDate(), // 日期
      'q': Math.floor((date.getMonth() + 3) / 3), // 季度
      'w': date.getDay(), // 星期，注意是0-6
      'H': date.getHours(), // 24小时制
      'h': date.getHours() % 12 === 0 ? 12 : date.getHours() % 12, // 12小时制
      'm': date.getMinutes(), // 分钟
      's': date.getSeconds(), // 秒
      'S': date.getMilliseconds() // 毫秒
    }
    let week = ['天', '一', '二', '三', '四', '五', '六']
    for (let i in obj) {
      fmt = fmt.replace(new RegExp(i + '+', 'g'), function (m) {
        let val = obj[i] + ''
        if (i === 'w') return (m.length > 2 ? '星期' : '周') + week[val]
        for (let j = 0, len = val.length; j < m.length - len; j++) val = '0' + val
        return m.length === 1 ? val : val.substring(val.length - m.length)
      })
    }
    return fmt
  },
  // 近距离现在相差时间
  Date.diffTime = function(endTime) {
    // 如果时间格式是正确的，那下面这一步转化时间格式就可以不用了
    var dateEnd = new Date(endTime.replace(/-/g, '/'))
    var dateBegin = new Date() // 获取当前时间
    // var dateEnd = new Date(endTime.replace(/-/g, '/'))
    var dateDiff = dateEnd.getTime() - dateBegin.getTime()
    // 时间差的毫秒数
    var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000))
    // 计算出相差天数
    var leave1 = dateDiff % (24 * 3600 * 1000)
    // 计算天数后剩余的毫秒数
    var hours = Math.floor(leave1 / (3600 * 1000))
    // 计算出小时数
    // 计算相差分钟数
    var leave2 = leave1 % (3600 * 1000)
    // 计算小时数后剩余的毫秒数
    var minutes = Math.floor(leave2 / (60 * 1000))
    // 计算相差分钟数
    // 计算相差秒数
    var leave3 = leave2 % (60 * 1000)
    // 计算分钟数后剩余的毫秒数
    var seconds = Math.round(leave3 / 1000)

    var time = {
      dayDiff: dayDiff,
      hours: hours,
      minutes: minutes,
      seconds: seconds
    }
    return time
  },
  // 苹果手机显示日期
    Date.iosformatDate = function(date) {
    if (date) {
      var iosdate = date.replace(/-/g, '/')
    } else {
      return date
    }
    return iosdate
  },
  // 苹果手机显示时间
  Date.iosformatTime = function(date){
    if (date) {
      var h = date.getHours()
      var m = date.getMinutes()
      var s = date.getSeconds()
    } else {
      return date
    }
    return h + ':' + m + ':' + s
  }
export default Date
